package edu.maplef.bookwild.config;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Properties;

public class Config {

	private static HashMap<String, String> HASH_CONFIG = new HashMap<String, String>();

	private static String config = "conf.properties";

	public static boolean isInit = false;

	//	public static Set<Integer> bookwild_userids = Collections
	//			.synchronizedSet(new HashSet<Integer>(1000));

	static {
		init();
	}

	/**
	 * @Description 通过字符串获得对应的配置
	 * @param id 配置对应的id
	 * @return
	 */
	public static String getConfig(String id) {
		if (!isInit)
			init();
		return HASH_CONFIG.get(id);
	}

	/**
	 * 获得所有配置列表
	 * @return 所有配置的哈希表 <配置名,配置值>
	 */
	public static HashMap<String, String> getConfigs() {
		if (!isInit)
			init();
		return HASH_CONFIG;
	}

	/**
	 * 设定配置文件路径
	 * @param path 配置文件名(不带路径表示当前)
	 */
	public static void setPath(String path) {
		if (!isInit)
			init();
		config = path;
	}

	/**
	 * @Description 加载对应的properties文本
	 */
	public static void init() {
		if (isInit)
			clear();
		Properties prop = new Properties();
		config.replace('\\', '/');
		InputStream fis;
		try {
			fis = Config.class.getResourceAsStream(config);
			prop.load(fis);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			System.exit(-1);
		} catch (IOException e) {
			e.printStackTrace();
			System.exit(-1);
		}
		for (Enumeration<Object> e = prop.keys(); e.hasMoreElements();) {
			String id = e.nextElement().toString();
			String name = prop.getProperty(id);
			HASH_CONFIG.put(id, name);
		}
		isInit = true;
	}

	/**
	 * 清除配置
	 */
	public static void clear() {
		HASH_CONFIG.clear();
		isInit = false;
	}

	/**
	 * 重新载入配置
	 */
	public static void reload() {
		clear();
		init();
	}
}
